package es.usj.redes.dao;

import java.util.List;

import es.usj.redes.dto.Mail;
/**
 * Interfaz para el acceso a la tabla Mail.
 * 
 * Mediante esta interfaz se especifican los metodos minimos que tienen 
 * que implementar la clase de acceso a la tabla Mail.
 * 
 * @version 1.0
 * @since 1.0
 */
public interface MailDAO {
	/**
	 * Crea una fila nueva de enviado.
	 * @param obj el objeto a crear
	 * @throws DAOException
	 */
	public void create(Mail obj) throws DAOException;
	/**
	 * Elimina a partir de su ID la fila especificada
	 * @param idMail id de la PK de la fila.
	 * @throws DAOException
	 */
	public void delete(int idMail) throws DAOException;
	/**
	 * Actauliza la fila especificada por el idMailUsers dentro del objeto.
	 * @param obj mail para actualizar los datos de la fila.
	 * @throws DAOException
	 */
	public void update(Mail obj) throws DAOException;
	/**
	 * Lee un objeto a partir de su id
	 * @param idMail Primary Key para leer la fila especificada.
	 * @return objeto con los datos correspondientes al ID
	 * @throws DAOException
	 */
	public Mail read(int idMail) throws DAOException;
	/**
	 * Lista todos los objetos que hay en la BBDD
	 * @return
	 * @throws DAOException
	 */
	public List<Mail> listAll() throws DAOException;
	
	public List<Mail> listByFrom(int idUser) throws DAOException;
	
}
